// vuex 提取公告 属性

// 导入 vuex 函数
import { createStore } from 'vuex'

// 导入 axiso 
import axios from 'axios'

// 创建仓库实列
const store = createStore({
    // state 字段 等同于vue 的 data 字段
    state() {
        return {
            // 头部数据
            seller: {},
            // connter 数据
            goods: [],
            // 购物车数据
            ratings: [],
            // 购物数量
            carList: [],
            // 购物车显示隐藏
            isShow: false,
            // 购物车金额
            price: 0
        }
    },
    // mutations 字段 等同于 vue 的 methods 用于定义方法，执行操作
    mutations: {
        getSeller(state, res) {
            state.seller = res.data
        },
        getGoods(state, res) {
            if (res.data) {
                res.data.forEach(item => {
                    item.foods.forEach(a => {
                        a.id = 0
                    })
                });
                state.goods = res.data
            }
        },
        getRatings(state, res) {
            state.ratings = res.data
        },
        isShows(state) {
            state.isShow = !state.isShow
        },

        sitCarListAdd(state, obj) {
            if (state.carList.length === 0) {
                state.carList.push(obj)
                state.carList[state.carList.indexOf(obj)].id++
            } else {
                if (state.carList.indexOf(obj) !== -1) {
                    state.carList[state.carList.indexOf(obj)].id++
                } else {
                    state.carList.push(obj)
                    state.carList[state.carList.indexOf(obj)].id++
                }
            }
            
        },
        sitCarListReduce(state,obj){
            if(state.carList[state.carList.indexOf(obj)].id!==1){
                state.carList[state.carList.indexOf(obj)].id --
            }else{
                state.carList[state.carList.indexOf(obj)].id = 0
               state.carList.forEach((item,index)=>{
                if(item.id === 0){
                    state.carList.splice(index,1)
                }
               })
            }
        },
        // 清空购物车
        sitEmpty(state){
            state.carList.forEach(item=>{
                item.id = 0
            })
            state.carList = []
        }
    },
    // actions 字段和mutations 字段同理，但actions 主要用于处理异步操作
    actions: {
        async getSellerItem({ commit }) {
            const data = await axios.get('/api/seller')
            commit('getSeller', {
                data: data.data
            })
        },
        async getgetGoodsItem({ commit }) {
            const data = await axios.get('/api/goods')
            commit('getGoods', {
                data: data.data
            })
        },
        async getgetRatingsItem({ commit }) {
            const data = await axios.get('/api/ratings')
            commit('getRatings', {
                data: data.data
            })
        },
    }

})
export default store
